package com.yuw.staticproxy.service.proxy;

import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.yuw.staticproxy.service.ISpokesman;
import com.yuw.staticproxy.service.impl.EducationSpokesman;

/**
 * 代理人（静态代理模式下，每个被代理对象都有一个与之对应的代理人；）
 * （动态代理模式代理人是利用反射根据被代理人动态生成的）
 */
public class EducationSpokesmanProxy implements ISpokesman {

    // 代理类内部引用委托类（被代理对象）
    private EducationSpokesman eSpeaker;

    /**
     * 构造方法
     *
     * @param eSpeaker
     */
    public EducationSpokesmanProxy(EducationSpokesman eSpeaker) {
        this.eSpeaker = eSpeaker;
    }

    @Override
    public void doSpeaking() {
        Logger.getLogger(this.getClass().getSimpleName()).log(Level.INFO, new Date().toLocaleString() + " 新闻发布会马上开始.");
        // 代理类调用被托管类的具体业务方法，来代为管理整体流程，被托管类则需要只关注于自身业务内容即可
        eSpeaker.doSpeaking();
        Logger.getLogger(this.getClass().getSimpleName()).log(Level.INFO, new Date().toLocaleString() + " 新闻发布会结束.");

    }

}
